package com.xci.core.datasource;

import lombok.extern.slf4j.Slf4j;

/**
 * 动态数据源切换
 * @author 吕艳阳
 */
@Slf4j
class DynamicDataSourceContextHolder {
    /**
     * 使用ThreadLocal维护变量，ThreadLocal为每个使用该变量的线程提供独立的变量副本，
     * 所以每一个线程都可以独立地改变自己的副本，而不会影响其它线程所对应的副本。
     */
    private static final ThreadLocal<String> DATESOURE_CONTEXT = new ThreadLocal<>();

    /**
     * 设置数据源名称
     */
    static void setDateSoureName(String name) {
        log.debug("切换到{}数据源", name);
        DATESOURE_CONTEXT.set(name);
    }

    /**
     * 获得数据源名称
     */
    static String getDateSoureName() {
        return DATESOURE_CONTEXT.get();
    }

    /**
     * 清空数据源名称
     */
    static void clearDateSoureName() {
        DATESOURE_CONTEXT.remove();
    }
}
